Xbasic

Extension::CurlDownloadMultiple Method

Syntax

.DownloadMultiple as C (files as C)

Arguments

filesCharacter

A CR-LF delimited list of files to download in the form "<local_filename>|<remote_url>".

Returns

resultCharacter

Returns an error message for any files that could not be downloaded. If all downloads succeed, DownloadMultiple() returns an empty string.

Description

Download multiple files.

Discussion

The DownloadMultiple() function downloads a one or more remote files. Files to download are specified as a CR-LF delimited list of file names and URLs.

For example, the following script from an .A5W page downloads 3 zip files to the session folder and displays the local URLs as a comma-delimited list.

<%a
' Generate temporary download filenames:
dim f1 as c = context.request.getRequestTempFileName(".zip")
dim f2 as c = context.request.getRequestTempFileName(".zip")
dim f3 as c = context.request.getRequestTempFileName(".zip")

' Build files list:
dim files as c = ""
files = files + f1 + "|http://peopleplacesthings.com/people.zip" + crlf()
files = files + f2 + "|http://peopleplacesthings.com/places.zip" + crlf()
files = files + f3 + "|http://peopleplacesthings.com/things.zip"

' Do the download:
result = extension::curl::DownloadMultiple(files)

' Check for errors/post process
dim fileURLs[0] as c
if (result <> "" ) then
    ' An error occurred...
    ' Output error and terminate script:
    ? result
    exit
else
    ' success!
    ' Copy to session folder:
    context.session.SaveFileToSessionFile(f1,"people.zip")
    context.session.SaveFileToSessionFile(f2,"places.zip")
    context.session.SaveFileToSessionFile(f3,"things.zip")

    ' Get session folder URL and add to fileURLs array:
    fileURLs.push(context.session.formatFileDataURL("people.zip"))
    fileURLs.push(context.session.formatFileDataURL("places.zip"))
    fileURLs.push(context.session.formatFileDataURL("things.zip"))
end if

' Dump CR-LF list of file URLs:
result = fileURLs.dump()

' Output file URLs as comma delimited list:
? crlf_to_comma(result)
%>